DEFAULT (singleton) creates one shared instance for the entire app lifetime. REQUEST creates a new instance per incoming request — useful for per-request context like tenant ID or authenticated user. TRANSIENT creates a fresh instance for every injection point. Most providers should be DEFAULT.
DEFAULT (singleton) — one instance shared across the entire app. Best for stateless services, repositories, and utilities.
REQUEST — new instance per HTTP request, then discarded. Use for services needing request context: tenant ID, current user, per-request logging.
TRANSIENT — new instance per injection point. Rare; use for stateful per-use utilities that must not share state between consumers.